iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
自我挑戰組

JavaScript老學徒筆記—馬步篇系列 第 11

【Day10】「如果肚子餓了,就吃香蕉」--流程判斷邏輯

  • 分享至 

  • xImage
  •  
tags: JavaScript

「如果肚子餓了,就吃香蕉」--流程判斷邏輯

最簡單的流程控制,就是「如果」符合某個條件,就去做某件事,也就是if...else這樣的程式語法。

就像「如果肚子餓了,就吃香蕉」,猴子嗎?

例如:「打不過,逃!」這是江南七怪的老五南樵子在學生郭靖要出江湖闖蕩時,提醒郭靖的話。如果滿足「打不過」這個條件,就做「逃」這個動作。

if (條件式){
	//條件成立(true)的話,執行{ }區塊內的內容
}
else {
	//如果條件不成立(false),執行{ }區塊中的內容
}

如果條件不只一個,可以使用 else...if 來新增條件。

if (條件式 1){
	//條件1成立(true)的話,執行{ }區塊內的內容
}
else if (條件式 2){
	//條件2成立(true)的話,執行{ }區塊內的內容
}
else if (條件式 3){
	//條件3成立(true)的話,執行{ }區塊內的內容
}
else {
	//如果上面的條件都不成立(false),執行{ }區塊中的內容
}

回到郭靖的例子:

var fight = '打到對方吐血';
if ('打不過' === true) {
	fight = '逃';
}

我想隨機選出1到7之間的數字,用來表示江南七怪的排行,例如數字等於1就印出「飛天蝙蝠--柯鎮惡」,數字等於2就印出「妙手書生--朱聰」,依此類推。

Math.random() 會隨機產生 0 到 1 之間的小數。 而 Math.ceil(x) 會將x無條件進位。

//Math.random() 會隨機產生 0 到 1 之間的小數。 而 Math.ceil(x) 會將x無條件進位。

if(Math.ceil(Math.random()*7)===1){
  console.log('飛天蝙蝠--柯鎮惡');
}
else if (Math.ceil(Math.random()*7)===2){
  console.log('妙手書生--朱聰');
}
else if (Math.ceil(Math.random()*7)===3){
  console.log('馬王神--韓寶駒');
}
else if (Math.ceil(Math.random()*7)===4){
  console.log('南山樵子--南希仁');
}
else if (Math.ceil(Math.random()*7)===5){
  console.log('笑彌陀--張阿生');
}
else if (Math.ceil(Math.random()*7)===6){
  console.log('鬧市俠隱--全金發');
}
else{
  console.log('越女劍--韓小瑩');
}

寫了這麼落落長的一段,看得眼都花了,if .... else ....也判斷了7次,就效能上來說比較差。

JavaScript還有另一種的switch條件判斷式,適合這樣的情況。

switch(Math.ceil(Math.random()*7)){
  case 1:
    console.log('飛天蝙蝠--柯鎮惡');
    break;
  case 2:
    console.log('妙手書生--朱聰');
    break;
  case 3:
    console.log('馬王神--韓寶駒');
    break;
  case 4:
    console.log('南山樵子--南希仁');
    break;
  case 5:
    console.log('笑彌陀--張阿生');
    break;
  case 6:
    console.log('鬧市俠隱--全金發');
    break;
  case 7:
    console.log('越女劍--韓小瑩');;
    break;
  default:
    console.log('六怪陣亡,只剩老大飛天蝙蝠柯鎮惡');
    break;
}

switch括號中可以放入「運算式」、「變數」或「值」,如果符合case後面所列出來的條件,就執行那個case區塊的程式敘述。如果都不符合則執行default區塊的程式敘述。

當滿足case列出來的條件,執行完程式敘述,break指令會中指流程判斷,不去執行後面的case條件判斷。


上一篇
【Day9】To be or Not To be?邏輯運算子
下一篇
【Day11】忙得團團轉的迴圈
系列文
JavaScript老學徒筆記—馬步篇35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言